package com.ruoyi.job.fallbackFactory;

import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.job.fallbackFactory.impl.RemoteSystemAppFallbackFactory;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.factory.RemoteUserFallbackFactory;
import com.ruoyi.system.api.model.LoginUser;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;

/**
 * app服务
 * 
 * @author ruoyi
 */
@FeignClient(contextId = "remoteSystemAppService", value = ServiceNameConstants.SYSTEM_APP_SERVICE, fallbackFactory = RemoteSystemAppFallbackFactory.class)
public interface RemoteSystemAppService
{
    /**
     * 定时自动开奖（未开红包），未开奖的用户自动开奖(凌晨之前)
     * @param source 请求来源
     * @return 结果
     */
    @GetMapping("/task/timingLottery")
    public void timingLottery(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);

    /**
     * 开始开团
     * @param source 请求来源
     * @return 结果
     */
    @GetMapping("/task/startGroup/{groupId}")
    public void startGroup(@PathVariable("groupId") Long groupId,@RequestHeader(SecurityConstants.FROM_SOURCE) String source);

    /**
     * 释放拼团基金奖励（订购奖励）（24小时后释放）
     * 用户主动点击领取后，只能释放一半
     * @param source 请求来源
     * @return 结果
     */
    @GetMapping("/task/freedOrderRewards")
    public void freedOrderRewards(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
    /**
     * 1.总产值释放到ftc小、pc入口
     * 2.插入初始化拼团结果信息
     * @param source 请求来源
     * @return 结果
     */
    @GetMapping("/task/grossOutputMain")
    public void grossOutputMain(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
    /**
     * 凌晨0点初始化操作
     * @param source 请求来源
     * @return 结果
     */
    @GetMapping("/task/beforeDawnInit")
    public void beforeDawnInit(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
    /**
     * 自动挂卖ftc大(开启ftc自动挂卖，开启任务定时)
     * @param source 请求来源
     * @return 结果
     */
    @GetMapping("/task/automaticListingExecute")
    public void automaticListingExecute(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
    /**
     * ftc自动回收
     * @param source 请求来源
     * @return 结果
     */
    @GetMapping("/task/automaticRecycling")
    public void automaticRecycling(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
    /**
     * 计算满额账户
     * @param source 请求来源
     * @return 结果
     */
    @GetMapping("/task/fullAccountInit")
    public void fullAccountInit(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
    /**
     * 计算团队考核
     * @param source 请求来源
     * @return 结果
     */
    @GetMapping("/task/teamExamineInit")
    public void teamExamineInit(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
    /**
     * 团队奖励结算收益
     * @param source 请求来源
     * @return 结果
     */
    @GetMapping("/task/teamRewardSettlementInit")
    public void teamRewardSettlementInit(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
}
